package com.hxx.blog.controller;

import com.hxx.blog.pojo.User;
import com.hxx.blog.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;

import jakarta.servlet.http.HttpSession; // 注意包名

@Controller
public class UserController {

    @Autowired
    private UserService userService;
    @GetMapping("/login")
    public String loginPage() {
        // [关键] 返回 "login" 字符串，Spring Boot (Thymeleaf)
        // 会自动去找 templates/login.html 模板并显示
        return "login";
    }

    /**
     * 2. 处理登录请求
     * 当在登录页点击“登录”按钮时，表单会提交到 /login (POST)
     */
    @PostMapping("/login")
    public String doLogin(@RequestParam("username") String username,
                          @RequestParam("password") String password,
                          HttpSession session, // 用于在登录后保存用户信息
                          Model model) { // 用于向页面传递错误信息

        User user = userService.login(username, password);

        if (user != null) {
            // 登录成功
            // [关键] 把用户信息存入 Session，这样其他页面就知道你登录了
            session.setAttribute("user", user);

            // 重定向到首页
            return "redirect:/"; // redirect:/ 是重定向到根路径
        } else {
            // 登录失败
            // [关键] 把错误信息放入 Model，带回给 login.html
            model.addAttribute("error", "用户名或密码错误！");

            // 重新返回登录页
            return "login";
        }
    }

    /**
     * 3. 首页 (假设)
     * 登录成功后跳转到这里
     */
    @GetMapping("/")
    public String indexPage(HttpSession session, Model model) {
        // 尝试从 Session 中获取用户信息
        User user = (User) session.getAttribute("user");
        if (user == null) {
            // 如果 Session 里没有，说明没登录，重定向回登录页
            return "redirect:/login";
        }

        // 如果登录了，把用户信息传给首页
        model.addAttribute("user", user);
        return "index"; // 返回 templates/index.html
    }

    /**
     * 4. 退出登录
     */
    @GetMapping("/logout")
    public String logout(HttpSession session) {
        session.removeAttribute("user"); // 从 Session 中移除用户信息
        return "redirect:/login"; // 重定向回登录页
    }
}